Contents page

Index

SECTION 2 - Modeling and Detail Editor


 33] Phong edges, By Charles Blaquiere.

Remember that Phong shading interpolates the surface normal between the current face and the neighbouring face, if the connecting edge is not flagged "sharp". An example:

| 0 | 1 | 2 | 3 __| 4 5

When modelling a wine glass, You'd typically have long faces on the sides of the glass, leading to tiny faces representing the top surface of the rim (obviously, my diagram is upside-down. Mmmm, let's make our object a glass cover that fits over the cheese tray. Yeah, that's it).

The numbers represent some abstract kind of angle, with 0 representing surface normals that point to the right, and 5 those that point downwards. You see how the surface normal changes all over the large face, from 0 to 5, all because of the tiny rim. This causes the "flat areas seem to bulge like pillows" problem familiar to new 3-D users.

The standard ways to get around this are:

- define the connecting edges as sharp. This is fine, if You want a sharp look to the corner.

- create intermediate faces between the vertical and horizontal faces.

The second strategy will soften the effect, but the long vertical face's surface normal will *still* vary towards the normal of the next, almost-vertical, face.

In my modelling bag of tricks I have a solution that allows me to have my cake and eat it too: perfectly flat-looking areas where I want them, soft corners where I want them, all with a minimum of faces to keep object complexity down.

I just model the large, flat area in two parts, and make the edge part really skinny. I can then leave all edges soft, so there won't be any discontinuities, yet the large flat area will look perfectly flat.

|0 |0 | = large flat area (one set of faces) |0 |0 |0 I = another set of faces, parallel to the large I0 set. Should be very narrow, just running ____I2.5 along the Edge that connects to the horizontal 5 3.7 face.

In this case, both "|" and "I" faces have a surface normal of zero, and "_" faces have a surface normal of 5.

The "_" and "I" normals vary from 5 to zero as expected. The big difference, however, is that the "|" edges have normals that vary FROM ZERO TO ZERO. Badabing, badaboom.

------------------------------ ... Please Return to News ... ... Please Return to Index ... ------------------------------